package com.aseo.model.entity.hibernate;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity(name = "com.aseo.model.entity.hibernate.Domicilio")
@Table(name = "reclamos.domicilio")
public class Domicilio implements Serializable {

	private static final long serialVersionUID = 6059685746158271264L;

	@SequenceGenerator(name = "reclamos.domicilio_domicilio_id_seq", sequenceName = "reclamos.domicilio_domicilio_id_seq")
    @GeneratedValue(generator = "reclamos.domicilio_domicilio_id_seq")
	@Id
    @Basic(optional = false)
    @Column(name = "domicilio_id")
    private Long domicilioId;

	@JoinColumn(name = "tipo_vialidad_uno_id", referencedColumnName = "tipo_vialidad_id")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private TipoVialidad tipoVialidadUnoId;
    
	@Basic(optional = false)
    @Column(name = "texto_tipo_vialidad_uno")
    private String textoTipoVialidadUno;

	@JoinColumn(name = "tipo_vialidad_dos_id", referencedColumnName = "tipo_vialidad_id")
    @ManyToOne(fetch = FetchType.EAGER)
    private TipoVialidad tipoVialidadDosId;
	
	@Column(name = "texto_tipo_vialidad_dos")
    private String textoTipoVialidadDos;

	@JoinColumn(name = "tipo_vialidad_tres_id", referencedColumnName = "tipo_vialidad_id")
    @ManyToOne(fetch = FetchType.EAGER)
    private TipoVialidad tipoVialidadTresId;
	
	@Column(name = "texto_tipo_vialidad_tres")
    private String textoTipoVialidadTres;
    
	@JoinColumn(name = "tipo_localidad_id", referencedColumnName = "tipo_localidad_id")
    @ManyToOne(fetch = FetchType.EAGER)
    private TipoLocalidad tipoLocalidadId;
	
	@Column(name = "texto_tipo_localidad")
    private String textoTipoLocalidad;
    
	@JoinColumn(name = "tipo_espacio_id", referencedColumnName = "tipo_espacio_id")
    @ManyToOne(fetch = FetchType.EAGER)
    private TipoEspacio tipoEspacioId;    

	@Column(name = "texto_tipo_espacio")
    private String textoTipoEspacio;
    
	@JoinColumn(name = "tipo_area_id", referencedColumnName = "tipo_area_id")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private TipoArea tipoAreaId;

	@Basic(optional = false)
    @Column(name = "texto_tipo_area")
    private String textoTipoArea;

	@JoinColumn(name = "tipo_relacion_vialidad_id", referencedColumnName = "tipo_relacion_vialidad_id")
    @ManyToOne(fetch = FetchType.EAGER)
    private TipoRelacionVialidad tipoRelacionVialidadId;

	@Basic(optional = false)
    @Column(name = "referencia")
	private String referencia;
	
	@Basic(optional = false)
    @Column(name = "fecha_registro")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaRegistro;
    
	@Basic(optional = false)
    @Column(name = "fecha_actualizacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaActualizacion;
    
	@Basic(optional = false)
    @Column(name = "estado")
    private int estado;
    
	@JoinColumn(name = "sector_id", referencedColumnName = "sector_id")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Sector sectorId;
        
    public Domicilio() {}

    public Domicilio(Long domicilioId) {
        this.domicilioId = domicilioId;
    }

    public Long getDomicilioId() {
        return domicilioId;
    }

    public void setDomicilioId(Long domicilioId) {
        this.domicilioId = domicilioId;
    }

    public String getTextoTipoLocalidad() {
        return textoTipoLocalidad;
    }

    public void setTextoTipoLocalidad(String textoTipoLocalidad) {
        this.textoTipoLocalidad = textoTipoLocalidad;
    }

    public String getTextoTipoEspacio() {
        return textoTipoEspacio;
    }

    public void setTextoTipoEspacio(String textoTipoEspacio) {
        this.textoTipoEspacio = textoTipoEspacio;
    }

    public String getTextoTipoArea() {
        return textoTipoArea;
    }

    public void setTextoTipoArea(String textoTipoArea) {
        this.textoTipoArea = textoTipoArea;
    }

    public Date getFechaRegistro() {
        return fechaRegistro;
    }

    public void setFechaRegistro(Date fechaRegistro) {
        this.fechaRegistro = fechaRegistro;
    }

    public Date getFechaActualizacion() {
        return fechaActualizacion;
    }

    public void setFechaActualizacion(Date fechaActualizacion) {
        this.fechaActualizacion = fechaActualizacion;
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }

    public Sector getSectorId() {
        return sectorId;
    }

    public void setSectorId(Sector sectorId) {
        this.sectorId = sectorId;
    }

    public TipoArea getTipoAreaId() {
        return tipoAreaId;
    }

    public void setTipoAreaId(TipoArea tipoAreaId) {
        this.tipoAreaId = tipoAreaId;
    }

    public TipoEspacio getTipoEspacioId() {
        return tipoEspacioId;
    }

    public void setTipoEspacioId(TipoEspacio tipoEspacioId) {
        this.tipoEspacioId = tipoEspacioId;
    }

    public TipoLocalidad getTipoLocalidadId() {
        return tipoLocalidadId;
    }

    public void setTipoLocalidadId(TipoLocalidad tipoLocalidadId) {
        this.tipoLocalidadId = tipoLocalidadId;
    }

    public TipoVialidad getTipoVialidadUnoId() {
		return tipoVialidadUnoId;
	}

	public void setTipoVialidadUnoId(TipoVialidad tipoVialidadUnoId) {
		this.tipoVialidadUnoId = tipoVialidadUnoId;
	}

	public String getTextoTipoVialidadUno() {
		return textoTipoVialidadUno;
	}

	public void setTextoTipoVialidadUno(String textoTipoVialidadUno) {
		this.textoTipoVialidadUno = textoTipoVialidadUno;
	}

	public TipoVialidad getTipoVialidadDosId() {
		return tipoVialidadDosId;
	}

	public void setTipoVialidadDosId(TipoVialidad tipoVialidadDosId) {
		this.tipoVialidadDosId = tipoVialidadDosId;
	}

	public String getTextoTipoVialidadDos() {
		return textoTipoVialidadDos;
	}

	public void setTextoTipoVialidadDos(String textoTipoVialidadDos) {
		this.textoTipoVialidadDos = textoTipoVialidadDos;
	}

	public TipoVialidad getTipoVialidadTresId() {
		return tipoVialidadTresId;
	}

	public void setTipoVialidadTresId(TipoVialidad tipoVialidadTresId) {
		this.tipoVialidadTresId = tipoVialidadTresId;
	}

	public String getTextoTipoVialidadTres() {
		return textoTipoVialidadTres;
	}

	public void setTextoTipoVialidadTres(String textoTipoVialidadTres) {
		this.textoTipoVialidadTres = textoTipoVialidadTres;
	}

	public TipoRelacionVialidad getTipoRelacionVialidadId() {
		return tipoRelacionVialidadId;
	}

	public void setTipoRelacionVialidadId(TipoRelacionVialidad tipoRelacionVialidadId) {
		this.tipoRelacionVialidadId = tipoRelacionVialidadId;
	}
	
	public String getReferencia() {
		return referencia;
	}

	public void setReferencia(String referencia) {
		this.referencia = referencia;
	}

	@Override
    public int hashCode() {
        int hash = 0;
        hash += (domicilioId != null ? domicilioId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Domicilio)) return false;

        Domicilio other = (Domicilio) object;
        if ((this.domicilioId == null && other.domicilioId != null) 
         || (this.domicilioId != null && !this.domicilioId.equals(other.domicilioId))) return false;

        return true;
    }

    @Override
    public String toString() {
        return "com.aseo.model.entity.hibernate.Domicilio[domicilioId=" + domicilioId + "]";
    }

}
